#!/bin/bash

# 安装脚本 - 将虚拟串口工具安装到系统目录

INSTALL_PREFIX="/usr/local"
CONFIG_DIR="/etc/vserial"
BIN_DIR="$INSTALL_PREFIX/bin"
MODULE_DIR="/lib/modules/$(uname -r)/extra"

echo "=== 虚拟串口工具安装脚本 ==="

# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
    echo "错误: 需要root权限进行安装"
    echo "请使用: sudo $0"
    exit 1
fi

# 创建目录
echo "1. 创建目录..."
mkdir -p "$CONFIG_DIR"
mkdir -p "$BIN_DIR"
mkdir -p "$MODULE_DIR"

# 编译模块
echo "2. 编译内核模块..."
make clean && make

if [ $? -ne 0 ]; then
    echo "编译失败！"
    exit 1
fi

# 安装文件
echo "3. 安装文件..."

# 安装内核模块
cp vserial_stj.ko "$MODULE_DIR/"
echo "  内核模块: $MODULE_DIR/vserial_stj.ko"

# 安装配置工具
cp vserial_config.sh "$BIN_DIR/vserial_config"
chmod +x "$BIN_DIR/vserial_config"
echo "  配置工具: $BIN_DIR/vserial_config"

# 安装加载脚本
cp load_from_config.sh "$BIN_DIR/vserial_load"
chmod +x "$BIN_DIR/vserial_load"
echo "  加载脚本: $BIN_DIR/vserial_load"

# 安装测试脚本生成器
cp generate_test.sh "$BIN_DIR/vserial_test_gen"
chmod +x "$BIN_DIR/vserial_test_gen"
echo "  测试生成器: $BIN_DIR/vserial_test_gen"

# 安装卸载脚本
cp vserial_unload.sh "$BIN_DIR/vserial_unload"
chmod +x "$BIN_DIR/vserial_unload"
echo "  卸载脚本: $BIN_DIR/vserial_unload"

# 安装服务文件
if [ -f "vserial-stj.service" ]; then
    cp vserial-stj.service /etc/systemd/system/
    echo "  服务文件: /etc/systemd/system/vserial-stj.service"
fi

# 安装配置文件（如果存在）
if [ -f "vserial.conf" ]; then
    cp vserial.conf "$CONFIG_DIR/"
    echo "  配置文件: $CONFIG_DIR/vserial.conf"
else
    echo "  警告: 未找到 vserial.conf，请手动创建配置文件"
fi

# 安装用户态程序
if [ -f "serial_test" ]; then
    cp serial_test "$BIN_DIR/"
    echo "  测试程序: $BIN_DIR/serial_test"
fi

if [ -f "tcp_server" ]; then
    cp tcp_server "$BIN_DIR/"
    echo "  服务器程序: $BIN_DIR/tcp_server"
fi

# 更新模块依赖
echo "4. 更新模块依赖..."
depmod -a

echo ""
echo "=== 安装完成 ==="
echo ""
echo "使用方法:"
echo "  1. 编辑配置文件: sudo vim $CONFIG_DIR/vserial.conf"
echo "  2. 手动加载: sudo vserial_load"
echo "  3. 手动卸载: sudo vserial_unload"
echo "  4. 生成测试: sudo vserial_test_gen"
echo ""
echo "服务管理:"
echo "  启用服务: sudo systemctl enable vserial-stj"
echo "  启动服务: sudo systemctl start vserial-stj"
echo "  停止服务: sudo systemctl stop vserial-stj"
echo "  查看状态: sudo systemctl status vserial-stj"
echo ""
echo "卸载方法:"
echo "  sudo systemctl stop vserial-stj"
echo "  sudo systemctl disable vserial-stj"
echo "  sudo rmmod vserial_stj"
echo "  sudo rm -rf $CONFIG_DIR"
echo "  sudo rm $BIN_DIR/vserial_*"
echo "  sudo rm /etc/systemd/system/vserial-stj.service"
echo ""
echo "配置文件示例:"
echo "  ttyV0,127.0.0.1,5000,串口1"
echo "  ttyV1,127.0.0.1,5001,串口2"
echo "  ttyV2,192.168.1.100,5002,远程串口"
echo ""
echo "卸载方法:"
echo "  sudo rmmod vserial_stj"
echo "  sudo rm -rf $CONFIG_DIR"
echo "  sudo rm $BIN_DIR/vserial_*" 